本文有整理在部落格裡。
裡面還有其他奇怪的文章,有空可以來看看喔。
昨天我們介紹了如何讓selenium動起來,今天我們就來了解一下使用selenium時常見的bug跟解決方法。
首先,第一個是版本問題,這其實是我前天在挖之前的程式出來跑時才發現的問題,
這問題基本上是driver跟瀏覽器版本不支援,最簡單只要重新下載對應版本的webdriver就好。
接著是這個,
這代表著selenium無法找到你所指定的元素,一般來說,如果不是你定位位置錯誤,
八成就是網頁還沒有完整載入,就使selemium搜尋元素。
此時,我們可以試著使用簡單的方法,time.sleep(),使程式整體暫停n秒,也可以配合try except使用。
當然,selenium針對這個問題也有開發相關函式,首先是顯式等待,
在這邊的意思是,我們針對所給予的元素,等待10秒,每0.2秒檢查是否出現,如果出現了就繼續,
如果10秒內還沒出現則報錯。
另外一種則是隱式等待,
相對於顯式等待是針對個別元素是否生成,隱式等待則是針對整個頁面,以上圖為例,這邊就是讓整個程式暫停,
給予瀏覽器10秒的時間,如果10秒內"整個頁面都已經生成完成"(講得直白一點其實就是我們頁面左上角的圈圈不再轉動),則繼續程式運行,如果10內還沒載完,則報錯,因此可以看的出來,相對於顯式等待,隱式等待跟強制等待可能會要花費更久的時間。
那麼selenium的部分應該就簡單告一段落了,明天將會進入專題一。